The present invention relates generally to the field of software quality assurance, and also to automated spelling and grammar checking.
The field of software quality assurance (SQA) is concerned with monitoring software engineering processes to ensure the quality of the final software product or service. SQA encompasses the entire software development process, which includes processes such as requirements definition, software design, coding, source code control, code reviews, software configuration management, testing, release management, and product integration.
Software testing is an aspect of SQA undertaken to provide direct feedback on the quality of the software product or service itself (as opposed to the processes used in its development). Testing may include automated, semi-automated, and/or manual elements, and may be performed at various stages/scopes of development, such as at the component level (unit testing), sub-system level (integration testing), and system level (system testing), as well as at delivery time (acceptance testing). It may cover many dimensions of software quality, including functional correctness, completeness, stability, compatibility, scalability, usability, and/or security. Although software testing is as old as software itself, it remains a formidable challenge, both because some aspects of software quality are subjective and because exhaustive testing for even a relatively simple software product is typically infeasible.
Numerous types of automated usage checkers exist to aid users in producing well-formed language constructs. Among the most well known are the automated spelling and grammar checkers that have come bundled with popular word processing software packages for about the past two decades or so. These tools flag words and phrases that may contain spelling and/or grammar errors, and typically also attempt to provide high-probability alternatives for the intended word or expression. A basic spell checker may simply extract words from a file and match them against entries in a reference list, while more sophisticated varieties may perform morphological and context-sensitive analyses that not only determine if there is a match for a given word in the lexicon but also if it is the correct word and word form for the context in which it is used. Grammar checkers similarly fall along a spectrum of sophistication, and both types of products will likely continue to evolve.